<?php
namespace Academico\Model;

use Zend\Db\Sql\Sql;
use Zend\Db\Sql\Where;
use Zend\Db\ResultSet\ResultSet;
use \OcaBase\Db\TableGateway\TableGateway;

class Frequencia extends TableGateway
{
    protected $schemaName = 'frequencia';
    protected $tableName  = 'frequencia';

    /**
     * Pega as frequencias agrupadas por aula e aluno
     * @param integer $idTurma
     * @return ResultSet
     */
    public function agruparPorAulaEAluno($idTurma)
    {
        $sql    = new Sql($this->getAdapter());
        $select = $sql->select();
        $select->from($this->table);

        $where = new Where();
        //$where->equalTo('id_aula', $idAula);

        $select->where($where);
        //print_r($sql->getSqlStringForSqlObject($select));die;

        $statement = $sql->prepareStatementForSqlObject($select);
        $results   = $statement->execute();

        $resultSet = new ResultSet();
        $resultSet->initialize($results);

        $aReturn = array();
        foreach ($resultSet as $row) {
            $aReturn[$row->id_aula][$row->id_aluno] = $row->cs_frequencia;
        }
        return $aReturn;
    }


    public function registrarPorAula($idAula, array $aFrequencias)
    {
        if (!$idAula) {
            return;
        }

        // recupera registros de frequencia para a aula
        $aFrequenciasRegistradas = $this->agruparPorAulaEAluno($idAula);

        $aGravar['id_aula'] = $idAula;
        foreach ($aFrequencias as $idAluno => $csFrequencia) {
            $aGravar['id_aluno']      = $idAluno;
            $aGravar['cs_frequencia'] = $csFrequencia;
            // verifica se o aluno já possui registro de frequência para essa aula
            if (isset($aFrequenciasRegistradas[$idAula][$idAluno])) {
                $this->update($aGravar, array('id_aluno' => $idAluno, 'id_aula' => $idAula));
            } else {
                $this->insert($aGravar);
            }
        }
    }
}
